﻿using Core.Info;
using Core.Utility;
using Core.Utility.Crypto;
using Core.Utility.Crypto.Core;
using Core.Utility.Helper;
using Core.ValidateRules.Lib;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Reflection;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;

/*
 * @生成日期 : 2022-11-10
 * @生成说明 : 接口配置参数
 */
namespace Dto.Core.Config
{
    /// <summary>
    /// 接口配置参数 , 表： api_config_param
    /// </summary>
    public class ApiConfigParamDto : CommonBaseDto
    {
        #region 属性

        // 忽略生成字段 - id - 自增主键;数据库的自增主键

        // 忽略生成字段 - sid - 雪花Id，所有的外键均使用该字段

        #region 接口采集配置Id;api_config.id
        /// <summary>
        /// 接口采集配置Id;api_config.id
        /// </summary>
        private long? fkConfigSid;

        /// <summary>
        /// 接口采集配置Id;api_config.id
        /// </summary>
        [JsonProperty("fk_config_sid")]
        [Display(Name = "接口采集配置Id")]
        public long? FkConfigSid
        {
            get { return fkConfigSid; }
            set
            {
                fkConfigSid = value;
                OnPropertyChanged();
            }
        }
        #endregion 接口采集配置Id;api_config.id

        #region 上级参数Sid;api_config_param.id
        /// <summary>
        /// 上级参数Sid;api_config_param.id
        /// </summary>
        private long? parentSid;

        /// <summary>
        /// 上级参数Sid;api_config_param.id
        /// </summary>
        [JsonProperty("parent_sid")]
        [Display(Name = "上级参数Sid")]
        public long? ParentSid
        {
            get { return parentSid; }
            set
            {
                parentSid = value;
                OnPropertyChanged();
            }
        }
        #endregion 上级参数Sid;api_config_param.id

        #region 参数分组键
        /// <summary>
        /// 参数分组键
        /// </summary>
        private string? paramGroupKey;

        /// <summary>
        /// 参数分组键
        /// </summary>
        [JsonProperty("param_group_key")]
        [Display(Name = "参数分组键")]
        public string? ParamGroupKey
        {
            get { return paramGroupKey; }
            set
            {
                paramGroupKey = value;
                OnPropertyChanged();
            }
        }
        #endregion 参数分组键

        #region 参数分组名称
        /// <summary>
        /// 参数分组名称
        /// </summary>
        private string? paramGroupName;

        /// <summary>
        /// 参数分组名称
        /// </summary>
        [JsonProperty("param_group_name")]
        [Display(Name = "参数分组名称")]
        public string? ParamGroupName
        {
            get { return paramGroupName; }
            set
            {
                paramGroupName = value;
                OnPropertyChanged();
            }
        }
        #endregion 参数分组名称

        #region 参数类型
        /// <summary>
        /// 参数类型
        /// </summary>
        private string? paramType;

        /// <summary>
        /// 参数类型
        /// </summary>
        [JsonProperty("param_type")]
        [Display(Name = "参数类型")]
        public string? ParamType
        {
            get { return paramType; }
            set
            {
                paramType = value;
                OnPropertyChanged();
            }
        }
        #endregion 参数类型

        #region 参数名称
        /// <summary>
        /// 参数名称
        /// </summary>
        private string? paramName;

        /// <summary>
        /// 参数名称
        /// </summary>
        [JsonProperty("param_name")]
        [Display(Name = "参数名称")]
        public string? ParamName
        {
            get { return paramName; }
            set
            {
                paramName = value;
                OnPropertyChanged();
            }
        }
        #endregion 参数名称

        #region 参数键
        /// <summary>
        /// 参数键
        /// </summary>
        private string? paramKey;

        /// <summary>
        /// 参数键
        /// </summary>
        [JsonProperty("param_key")]
        [Display(Name = "参数键")]
        public string? ParamKey
        {
            get { return paramKey; }
            set
            {
                paramKey = value;
                OnPropertyChanged();
            }
        }
        #endregion 参数键

        #region 参数值
        /// <summary>
        /// 参数值
        /// </summary>
        private string? paramValue;

        /// <summary>
        /// 参数值
        /// </summary>
        [JsonProperty("param_value")]
        [Display(Name = "参数值")]
        public string? ParamValue
        {
            get { return paramValue; }
            set
            {
                paramValue = value;
                OnPropertyChanged();
            }
        }
        #endregion 参数值

        #region 参数说明
        /// <summary>
        /// 参数说明
        /// </summary>
        private string? paramDescription;

        /// <summary>
        /// 参数说明
        /// </summary>
        [JsonProperty("param_description")]
        [Display(Name = "参数说明")]
        public string? ParamDescription
        {
            get { return paramDescription; }
            set
            {
                paramDescription = value;
                OnPropertyChanged();
            }
        }
        #endregion 参数说明

        // 忽略生成字段 - sort_number - 排序号

        // 忽略生成字段 - remark - 备注

        // 忽略生成字段 - created_by - 创建人

        // 忽略生成字段 - created_by_name - 创建人名称;创建人名称冗余存储

        // 忽略生成字段 - created_time - 创建时间

        // 忽略生成字段 - updated_by - 更新人

        // 忽略生成字段 - updated_by_name - 更新人名称;修改人名称冗余存储

        // 忽略生成字段 - updated_time - 更新时间

        // 忽略生成字段 - revision - 乐观锁;用于数据并发操作时使用,数据每次更新后，改变此值

        // 忽略生成字段 - is_deleted - 删除标识;用于标识数据是否逻辑删除(软删) 0:否;1:是
        #endregion 属性
    }
}